package com.algorithm;

/**
 * @Author 落叶尘纷
 * @Date 2020/4/17 10:08
 * @Version 1.0
 *
 * 以上是valueOf方法的实现细节。通常情况下，
 * IntegerCache.low=-128，IntegerCache.high=127（除非显示声明java.lang.Integer.IntegerCache.high的值），
 * Integer中有一段静态代码块，该部分内容会在Integer类被加载的时候就执行。
 *
 * 也就是说，当Integer被加载时，就新建了-128到127的所有数字并存放在Integer数组cache中。
 *
 * 再回到valueOf代码，可以得出结论。当调用valueOf方法（包括后面会提到的重载的参数类型包含String的valueOf方法）时，
 * 如果参数的值在-127到128之间，则直接从缓存中返回一个已经存在的对象。如果参数的值不在这个范围内，则new一个Integer对象返回。
 *
 * 所以，当把一个int变量转成Integer的时候（或者新建一个Integer的时候），建议使用valueOf方法来代替构造函数。
 * 或者直接使用Integer i = 100;编译器会转成Integer s = Integer.valueOf(10000);
 *
 *
 */
public class IntegerTest {
    public static void main(String[] args) {
        Integer a = 128;
        Integer b = 128;

        Integer c = 127;
        Integer d = 127;

        System.out.println("开始输出结果");
        System.out.println("a == b :" + (a == b));
        System.out.println("a.equals(b):" + (a.equals(b)));
        System.out.println("执行下一步操作");
        System.out.println("输出一下 a+ b" + (a+ b));
	
        System.out.println("c == d :" + (c == d));
        System.out.println("c.equals(d):" + (c.equals(d)));
        System.out.println("操作结束");
    }
}
